Create the navigation region without flipping
authorBenjamin Otte <otte@redhat.com>
Sun, 23 May 2010 19:06:24 +0000 (21:06 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 28 Jun 2010 12:19:18 +0000 (14:19 +0200)
Gets rid of some code in preparation to switching to do the computation
completely without GdkRegion.

gtk/gtkmenu.c

index 2ce078543df1546fae0c4da1b6f46ffaff75415d..3835e7300af0e739caa8fce50c7646a9ade798bd 100644 (file)
@@ -4163,40 +4163,6 @@ draw_stay_up_triangle (GdkWindow *window,
 }
 #endif
 
-static GdkRegion *
-flip_region (GdkRegion *region,
-            gboolean   flip_x,
-            gboolean   flip_y)
-{
-  gint n_rectangles;
-  GdkRectangle *rectangles;
-  GdkRectangle clipbox;
-  GdkRegion *new_region;
-  gint i;
-
-  new_region = gdk_region_new ();
-  
-  gdk_region_get_rectangles (region, &rectangles, &n_rectangles);
-  gdk_region_get_clipbox (region, &clipbox);
-
-  for (i = 0; i < n_rectangles; ++i)
-    {
-      GdkRectangle rect = rectangles[i];
-
-      if (flip_y)
-       rect.y -= 2 * (rect.y - clipbox.y) + rect.height;
-
-      if (flip_x)
-       rect.x -= 2 * (rect.x - clipbox.x) + rect.width;
-
-      gdk_region_union_with_rect (new_region, &rect);
-    }
-
-  g_free (rectangles);
-
-  return new_region;
-}
-
 static void
 gtk_menu_set_submenu_navigation_region (GtkMenu          *menu,
                                        GtkMenuItem      *menu_item,
@@ -4228,8 +4194,6 @@ gtk_menu_set_submenu_navigation_region (GtkMenu          *menu,
   if (event->x >= 0 && event->x < width)
     {
       gint popdown_delay;
-      gboolean flip_y = FALSE;
-      gboolean flip_x = FALSE;
       
       gtk_menu_stop_navigating_submenu (menu);
 
@@ -4243,26 +4207,22 @@ gtk_menu_set_submenu_navigation_region (GtkMenu          *menu,
        {
          /* left */
          point[0].x = event->x_root + 1;
-         point[1].x = 2 * (event->x_root + 1) - submenu_right;
-
-         flip_x = TRUE;
+         point[1].x = submenu_right;
        }
 
       if (event->y < 0)
        {
          /* top */
-         point[0].y = event->y_root + 1;
-         point[1].y = 2 * (event->y_root + 1) - submenu_top + NAVIGATION_REGION_OVERSHOOT;
+         point[0].y = event->y_root;
+         point[1].y = submenu_top - NAVIGATION_REGION_OVERSHOOT;
 
-         if (point[0].y >= point[1].y - NAVIGATION_REGION_OVERSHOOT)
+         if (point[0].y <= submenu_top)
            return;
-
-         flip_y = TRUE;
        }
       else
        {
          /* bottom */
-         point[0].y = event->y_root;
+         point[0].y = event->y_root + 1;
          point[1].y = submenu_bottom + NAVIGATION_REGION_OVERSHOOT;
 
          if (point[0].y >= submenu_bottom)
@@ -4274,13 +4234,6 @@ gtk_menu_set_submenu_navigation_region (GtkMenu          *menu,
 
       menu->navigation_region = gdk_region_polygon (point, 3, GDK_WINDING_RULE);
 
-      if (flip_x || flip_y)
-       {
-         GdkRegion *new_region = flip_region (menu->navigation_region, flip_x, flip_y);
-         gdk_region_destroy (menu->navigation_region);
-         menu->navigation_region = new_region;
-       }
-
       g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu)),
                    "gtk-menu-popdown-delay", &popdown_delay,
                    NULL);